package com.fangjinwang.zhushunqing.Utils;

/**
 * Created by admin on 2016/6/21.
 */
public class StringUtil {
    public static String telRegex = "[1][0-9]\\d{9}";
    public static String hanziRegex = "^[\\u4e00-\\u9fa5]+$";

    /**
     * 判断字符创是否为字符串
     *
     * @param str
     * @return
     */
    public static boolean isNumeric(String str) {
        for (int i = str.length(); --i >= 0; ) {
            if (!Character.isDigit(str.charAt(i))) {
                return false;
            }
        }
        return true;
    }

    /**
     * 判断是否为null、空字符串或者是"null"
     *
     * @param str
     * @return
     */
    public static boolean isNull(CharSequence... str) {

        for (CharSequence cha : str) {
            if (cha == null || cha.length() == 0 || cha.equals("null") || ((String)cha).contains("&nbsp")) {
                return true;
            } else {
                return false;
            }
        }

        return true;
    }

    public static boolean isEntity(String str) {
        if (str == null) {
            return false;
        }
        if ("".equals(str)) {
            return false;
        }
        return true;
    }

    /**
     * 处理小数点 如 1333.34 如果 dotNum=0 则返回1333，为1时返回1333.3 ，为2时返回1333.34
     * 如果小数点位数不足,则补0 如 12.3 如果dotNum=3 则返回12.300
     *
     * @param amtstr
     * @param dotNum
     * @param defaul 默认值
     * @return
     */
    public static String getAmt(String amtstr, int dotNum, String defaul) {
        if (!isNull(amtstr)) {
            String ret[] = amtstr.split("\\.");
            if (ret.length != 2) {
                return amtstr;
            } else {
                if (dotNum == 0) {
                    return ret[0];
                } else {
                    if (ret[1].length() > dotNum) {
                        return ret[0] + "." + ret[1].substring(0, dotNum);
                    } else {
                        for (int i = 0; i < dotNum - ret[1].length(); i++) {
                            amtstr += "0";
                        }
                        return amtstr;
                    }
                }
            }
        }
        return defaul;
    }

    /**
     * 使用java正则表达式去掉多余的.与0
     *
     * @param s
     * @return
     */
    public static String subZeroAndDot(String s) {
        if (s.indexOf(".") > 0) {
            s = s.replaceAll("0+?$", "");//去掉多余的0
            s = s.replaceAll("[.]$", "");//如最后一位是.则去掉
        }
        return s;
    }


    /**
     * 手机号码匹配
     *
     * @param phone
     * @return
     */
    public static boolean isPhoneNumber(String phone) {
        return !isNull(phone) && phone.matches(telRegex);
    }

    /**
     * 验证是否为汉字
     *
     * @param str
     * @return
     */
    public static boolean isHanzi(String str) {
        return !isNull(str) && str.matches(hanziRegex);
    }

    //是否包含汉字
    public static boolean isContainHanzi(String str){
        for (int i = str.length();--i>=0;) {
            if (String.valueOf(str.charAt(i)).matches(hanziRegex)) {
                return true;
            }
        }
        return false;
    }

    // 是否包含数字
    public static boolean isContainNum(String str){
        for (int i = str.length();--i>=0;) {
            if (Character.isDigit(str.charAt(i))) {
                return true;
            }
        }
        return false;
    }

    /**
     *
     */
    public static String getBankId(String bankno) {
        if ("".equals(bankno)) {
            return "";
        }
        return bankno;
//        return bankno.substring(0, 8) + "**********" + bankno.substring(bankno.length() - 3, bankno.length());
    }

    // 身份证 掩码
    public static String getCardId(String cardid) {
        if (StringUtil.isNull(cardid)) {
            return "";
        }
        return cardid.substring(0, 6) + "**********" + cardid.substring(cardid.length() - 3, cardid.length());
    }

    public static final String DATE_FORMAT_YYYY_MM_DD = "yyyy-MM-dd";

//    public static int minusDate(String begin, String end, int defValue) {
//        if (!DateUtil.isDate(begin, DATE_FORMAT_YYYY_MM_DD) || !DateUtil.isDate(end, DATE_FORMAT_YYYY_MM_DD)) {
//            return defValue;
//        }
//
//        SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_YYYY_MM_DD);
//        try {
//            Date beginDate = sdf.parse(begin);
//            Date endDate = sdf.parse(end);
//            long day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);
//            return (int) day;
//        } catch (ParseException e) {
//            return defValue;
//        }
//    }


    public static boolean getVerfyUrl(String text) {
        String urlReg = "((http|ftp|https)://)(([a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\\&%_\\./-~-]*)?";
        return text.matches(urlReg);
    }
}
